home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / misc / zpoint_3_14.lha / zpoint-3.14 / Rexx / Weiterleiten.zprx < prev    next >
Text File  |  1996-03-04  |  5KB  |  211 lines

  1. /* $VER: Weiterleiten.zprx 1.2 (2.3.1996), ©95 Jean-Marie de Crozals
  2.  
  3.   COPYRIGHT
  4.    Dieses  ARexx-Skript  ist  FD.  Änderungen  sind  nur  im   Rahmen   der
  5.    Konfiguration  dieses  Skriptes  oder  der  Anpassung  an neue "Zodiac's
  6.    Point"-Versionen zulässig. Die kommerzielle  Verwendung  ist  untersagt.
  7.    Ausnahme  ist  die Hinzufügung zu dem Programmpaket "Zodiac's Point" von
  8.    Ralph Seichter.
  9.  
  10.   INSTALLATION
  11.    Man kann dieses Script wie folgt auf eine F-Taste legen...
  12.    F1:SYS:RexxC/Rx ZPOINT:Rexx/Weiterleiten.zprx %s
  13.  
  14.    WICHTIG: Diese Skript benötigt UNBEDINGT folgende Library:
  15.  
  16.    - rexxtricks.library
  17.    - reqrexxtools.library
  18.  
  19.   BESCHREIBUNG
  20.    Dieses Script leitet die markierten Nachrichten in beliebige Bretter
  21.    (außer Spool-Brett) weiter... Die markierten Nachrichten werden
  22.    in diesem Brett gelöscht...
  23. */
  24.  
  25. /*
  26.   folgende Änderungen wurden von mir, Nils Görs, durchgeführt.
  27.   Das Copyright liegt aber weiterhin bei Jean-Marie de Crozals.
  28.  
  29.   + das Weiterleiten in das Nachrichtenarchiv.
  30.   + die Anpassung an die rexxtricks.library V38.2.
  31.   + bessere und schnellere Mehode zum weiterleiten.
  32.   + Nachrichten können zum löschen bzw. zum reorganisieren markiert
  33.     werden.
  34.   + alias.zp wird nun auch unterstützt (externes weiterleiten!)
  35.   + externes Weiterleiten über Brettgrenzen hinweg.
  36.   + beim externen Weiterleiten wird die Nachricht nun ggf. als
  37.     Crossposting versendet.
  38. */
  39.  
  40. NL = '0a'x
  41.  
  42. OPTIONS RESULTS
  43.  
  44. /* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
  45. PARSE ARG zpPort
  46. IF zpPort == "" THEN
  47.    zpPort = "ZPoint"
  48. ADDRESS VALUE zpPort
  49.  
  50. if (~show('LIBRARIES', 'rexxreqtools.library')) then
  51.  if (~addlib('rexxreqtools.library', 0, -30, 0)) then
  52.   do
  53.    REQUESTNOTIFY 'Kann rexxreqtools.library nicht öffnen!'
  54.    exit
  55.  end
  56.  
  57. if (~show('LIBRARIES', 'rexxtricks.library')) then
  58.  if (~addlib('rexxtricks.library', 0, -30, 0)) then
  59.   do
  60.    REQUESTNOTIFY 'Kann rexxtricks.library nicht öffnen!'
  61.    exit
  62.  end
  63.  
  64. WHICHLEVEL
  65. if (result ~= 'BOARD') then
  66.  do
  67.   REQUESTNOTIFY 'Du mußt schon in ein Brett gehen!!!'
  68.   exit
  69.  end
  70.  
  71. COUNT LISTED
  72. IF RESULT == 0 THEN SELECTMESSAGE
  73.  
  74. HOMEPATH
  75. Heimatpfad = result
  76. BrettListe = Heimatpfad'/boardlist.zp'
  77. UserListe  = Heimatpfad'/alias.zp'
  78.  
  79. 'GUILOCK text="Bitte haben Sie etwas Geduld!"'
  80.  
  81. COUNT ALL
  82. Anzahl = result
  83.  
  84. if (~open('Bretter',BrettListe,'R')) then
  85.  do
  86.   REQUESTNOTIFY 'Kann Brettliste nicht laden!'
  87.   exit
  88.  end
  89.  
  90. i=1
  91. liste.i = 'Nachrichtenarchiv'
  92. i=i+1
  93. do forever
  94.  Zeile = readln('Bretter')
  95.  if Zeile='' then leave
  96.  if left(Zeile,2)='B:' then
  97.   do
  98.    Laenge = length(Zeile)-2
  99.    Zeile = right(Zeile,Laenge)
  100.    liste.i = Zeile
  101.    i = i+1
  102.   end
  103. end
  104. call CLOSE('Bretter')
  105. liste.0 = i-1
  106.  
  107. if ~open(User,Userliste,'R') then
  108.  do
  109.   REQUESTNOTIFY 'Kann aliasliste nicht laden!'
  110.   exit
  111.  end
  112.  
  113. i=1
  114. user.i = '   ----- Userliste -----'
  115. i=i+1
  116. do while ~EOF(User)
  117.  Zeile = readln(User)
  118.  if left(Zeile,2)='A:' then
  119.   do
  120.    Laenge = length(Zeile)-2
  121.    Zeile = right(Zeile,Laenge)
  122.    user.i = Zeile
  123.    i = i+1
  124.   end
  125. end
  126. call CLOSE(User)
  127. user.0 = i-1
  128. call QSORT(user,,)
  129.  
  130. i = liste.0
  131. internmarker = liste.0
  132. i =i+1
  133. DO a = 1 to user.0
  134. liste.i = user.a
  135. i =i+1
  136. END
  137. liste.0 = liste.0+user.0
  138.  
  139. fenster.title      = 'Zielbrett wählen...'
  140. fenster.pubscreen  = zpPort
  141. fenster.gadgettext = 'extern _Weiterleiten|_interne Kopie|_Abbruch'
  142. fenster.width      = 600
  143. fenster.font       = 'SCREEN'
  144. fenster.sort       = 'FALSE'
  145.  
  146. if (~VIEWLIST('liste','fenster','destvar')) THEN DO
  147.   GUILOCK OFF
  148.   exit
  149. END
  150.  
  151. CALL rtezrequest("Was soll mit den Nachrichten passieren?",,
  152.                  "nicht löschen|zum _löschen markieren|zum _reorganisieren markieren",,
  153.                  "Weiterleiten","rt_pubscrname="zpPort)
  154. WhatToDo = RESULT
  155.  
  156. CALL TIME('Reset')
  157.  
  158. Messages = 0
  159. more= 1
  160. j = 1
  161.  JUMPTOMESSAGE 1
  162.   MESSAGEINFO LISTED
  163.   IF Result == 1 THEN CALL _Weiterleiten
  164.  
  165. DO WHILE more
  166.   JUMPTOMESSAGE LISTED
  167.   more = (RC)
  168.  IF more == 1 THEN CALL _Weiterleiten
  169. END
  170.  
  171. STime = TIME('Elapsed')
  172. Messages = Messages/destvar.0
  173. REQUESTNOTIFY "Es wurden" Messages "Nachrichten in" destvar.0 "Bretter weitergeleitet!",
  174.             NL"Diese Transaktion hat" STime "sek. gedauert!"
  175. EXIT
  176.  
  177. /*********************************************
  178.  *** Nachricht in die Bretter weiterleiten ***
  179.  *********************************************/
  180. _Weiterleiten:
  181. IF destvar.gadget == 1 THEN DO
  182.   DO k = 1 to destvar.0
  183.    BrettName = BrettName||","||destvar.k
  184.   END
  185.   BrettName = DELSTR(BrettName,1,10)
  186.   FORWARDMESSAGE RECEIVER '"'BrettName'"'
  187.   IF messages == 0 THEN Messages = 1
  188.   Messages = Messages * 2
  189.  END
  190.  
  191. ELSE DO
  192.   DO j = 1 to destvar.0
  193.    BrettName = destvar.j
  194.    FORWARDMESSAGE '"'BrettName'" INTERNAL'
  195.    Messages = Messages + 1
  196.   END
  197. END
  198.  
  199.  SELECT        /* Was soll danach mit den Nachrichten passieren? */
  200.    WHEN WhatToDo == 1 THEN NOP
  201.    WHEN WhatToDo == 2 THEN DELETE ONE
  202.    WHEN WhatToDo == 0 THEN DELETE LATER ONE
  203.  OTHERWISE
  204.    NOP
  205.  END
  206.  
  207. DROP Brettname
  208.  
  209. RETURN
  210. /*EOS*/
  211.